<?php

class Application_Form_Atendimento_Insere extends Zend_Form {

    private $atendimento;
    private $defaultValue;

    public function __construct($atendimento = null, $default = false) {
        if (isset($atendimento) && count($atendimento) > 0) {
            $this->atendimento = $atendimento[0];
        }else if( empty ($atendimento)){
            $default = true;
        }
        
        $this->defaultValue = $default;
        parent::__construct();
    }

    public function init() {
        $this->setAction('/atendimento/insere/novo');
        $this->setMethod('post');
        $this->setName('atendimento_conteudo_form');
        $this->setAttrib("class", "well form-inline");
        
        
        if (!$this->isNew() || $this->defaultValue) {
            $id = new Zend_Form_Element_Text('codigo');
            $id->setLabel('Código do Atendimento');
            $id->setAttrib('readonly', 'readonly');
            $id->setValue(!$this->isNew() ?$this->atendimento['codigo']:'');
            $id->setDecorators(array( 'ViewHelper', 'Errors', 'Label'));
            $this->addElement($id);

            $nomePac = new Zend_Form_Element_Text('nome_clie');
            $nomePac->setLabel('Paciente');
            $nomePac->setAttrib('disabled', 'disabled');
            $nomePac->setValue(!$this->isNew() ? $this->atendimento['nome_clie'] : '');
            $nomePac->setDecorators(array( 'ViewHelper', 'Errors', 'Label'));
            $this->addElement($nomePac);
        }

        $dtCadastro = new Zend_Form_Element_Text('dt_cadastro');
        $dtCadastro->setLabel('Data Cadastro');
        $dtCadastro->setAttrib("alt", "date");
        $dtCadastro->setAttrib("readonly", "readonly");
        $dtCadastro->setValue(!$this->isNew() ? $this->atendimento['dt_cadastro'] : Zend_Date::now()->get('Y/M/d'));
        $dtCadastro->addFilter(new Zend_Filter_Date());
        $dtCadastro->setDecorators(array( 'ViewHelper', 'Errors', 'Label'));
        $this->addElement($dtCadastro);
        
        
        $dtAtend = new Zend_Form_Element_Text('dt_atendimento');
        $dtAtend->setLabel('Data Atendimento');
        $dtAtend->setAttrib("alt", "date");
        $dtAtend->setValue(!$this->isNew() ? $this->atendimento['dt_atendimento']: Zend_Date::now()->get('Y/M/d'));
        $dtAtend->addFilter(new Zend_Filter_Date());
        $dtAtend->setDecorators(array( 'ViewHelper', 'Errors', 'Label'));
        $this->addElement($dtAtend);
        
        $dtFatu = new Zend_Form_Element_Text('dt_faturamento');
        $dtFatu->setLabel('Data Faturamento');
        $dtFatu->setAttrib("alt", "date");
        $dtFatu->setValue(!$this->isNew() ? $this->atendimento['dt_faturamento']: Zend_Date::now()->get('Y/M/d'));
        $dtFatu->addFilter(new Zend_Filter_Date());
        $dtFatu->setDecorators(array( 'ViewHelper', 'Errors', 'Label'));
        $this->addElement($dtFatu);
        
        $valor = new Zend_Form_Element_Text('valor');
        $valor->setLabel('Valor');
        $valor->setAttrib("alt", "decimal");
        $valor->setValue(!$this->isNew() ? $this->atendimento['valor']: '0.00');
        $valor->addFilter(new Zend_Filter_Money());
        $valor->setDecorators(array( 'ViewHelper', 'Errors', 'Label'));
        $this->addElement($valor);

        $func = new Zend_Form_Element_Select('funcionario');
        $func->setLabel('Profissional');
        $func->addMultiOptions($this->getFuncionarios());
        $func->setAttrib('class', 'right');
        $func->setValue(!$this->isNew() ? $this->atendimento['funcionario'] : '');
        $func->setDecorators(array( 'ViewHelper', 'Errors', 'Label'));
        $this->addElement($func);

        $segmento = new Zend_Form_Element_Select('plano_saude');
        $segmento->setLabel('Plano de Saúde');
        $segmento->addMultiOptions($this->getPlanosSaude(!$this->isNew() ? $this->atendimento['paciente'] : ''));
        $segmento->setValue(!$this->isNew() && isset($this->atendimento['plano_saude'])? $this->atendimento['plano_saude'] : '');
        $segmento->setDecorators(array( 'ViewHelper', 'Errors', 'Label'));
        $this->addElement($segmento);
        
        $segmento = new Zend_Form_Element_Select('segmento');
        $segmento->setLabel('Segmento');
        $segmento->addMultiOptions($this->getSegmentos());
        $segmento->setValue(!$this->isNew() ? $this->atendimento['segmento'] : '');
        $segmento->setDecorators(array( 'ViewHelper', 'Errors', 'Label'));
        $this->addElement($segmento);

        $hora = new Zend_Form_Element_Select('hora');
        $hora->setLabel('Hora');
        $hora->addMultiOptions($this->getHoras($this->atendimento['segmento']));
        $hora->setValue(!$this->isNew() ? $this->atendimento['hora'] : '' );
        $hora->setDecorators(array( 'ViewHelper', 'Errors', 'Label'));
        $this->addElement($hora);

        $atividade = new Zend_Form_Element_Select('atividade');
        $atividade->setLabel('Atividade');
        $atividade->addMultiOptions($this->getAtividades());
        $atividade->setValue(!$this->isNew() ? $this->atendimento['atividade'] : '');
        $atividade->setDecorators(array( 'ViewHelper', 'Errors', 'Label'));
        $this->addElement($atividade);

        $status = new Zend_Form_Element_Select('status');
        $status->setLabel('Status');
        $status->addMultiOptions(Util_Function_Util::getStatus());
        $status->setValue(!$this->isNew() ? $this->atendimento['status'] : 'P');
        $status->setDecorators(array( 'ViewHelper', 'Errors', 'Label'));
        $this->addElement($status);

        $obs = new Zend_Form_Element_Textarea('observacao');
        $obs->setLabel('Observação');
        $obs->setValue(!$this->isNew() ? $this->atendimento['observacao'] : '');
        $obs->setAttrib('rows', 5);
        $obs->setDecorators(array( 'ViewHelper', 'Errors', 'Label'));
        $this->addElement($obs);

        $hdDtExclusao = new Zend_Form_Element_Hidden("dt_exclusao");
        $hdDtExclusao->addFilter(new Zend_Filter_Date());
        $hdDtExclusao->setDecorators(array( 'ViewHelper', 'Errors', 'Label'));
        $this->addElement($hdDtExclusao);

        $pac = new Zend_Form_Element_Hidden('paciente');
        $pac->setDecorators(array( 'ViewHelper', 'Errors', 'Label'));
        $pac->setValue(!$this->isNew() ? $this->atendimento['paciente'] : '');
        $this->addElement($pac);
    }

    private function isNew() {
        return!isset($this->atendimento);
    }

    private function getFuncionarios() {
        $model = Application_Model_Usuario::getInstance();
        $lista = $model->getListFuncionario();
        $retorno[''] = 'Selecione';
        foreach ($lista as $key => $value) {
            $retorno[$value['codigo']] = $value['nome'];
        }
        return $retorno;
    }

    private function getSegmentos() {
        $model = Application_Model_Segmento::getInstance();
        $lista = $model->getList();
        $retorno[''] = 'Selecione';
        foreach ($lista as $key => $value) {
            $retorno[$value['codigo']] = $value['descricao'];
        }
        return $retorno;
    }

    private function getAtividades() {
        $model = Application_Model_Atividade::getInstance();
        $lista = $model->getAtividadeLista();
        $retorno[''] = 'Selecione';
        foreach ($lista as $key => $value) {
            $retorno[$value['codigo']] = $value['descricao'];
        }
        return $retorno;
    }

    private function getHoras($segmento) {
        $retorno = array();
        if (isset($segmento)) {
            $lista = Application_Model_SegmentoAgenda::getInstance()->getHorasBySegmento($segmento);
            if (isset($lista) && count($lista) > 0) {
                foreach ($lista as $key => $value) {
                    $retorno[$value['hora']] = $value['hora'];
                }
            }
        }

        return $retorno;
    }
    
    private function getPlanosSaude($codigo){
        $retorno[] = 'Selecione';
        if(is_null($codigo) || empty ($codigo)){
            return $retorno;
        }
        $lista = Application_Model_PlanoSaudeUsuario::getInstance()->getListByPessoa($codigo);
        foreach ($lista as $key => $value) {
            $retorno[$value['codigo']] = $value['descricao'];
        }
        return $retorno;
    }

}